home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 031a / wedl120.zip / DEMO.C next >
C/C++ Source or Header  |  1991-12-09  |  7KB  |  187 lines

  1.  
  2. /*---------------------------------------------------------------------------*/
  3. /*                                                                           */
  4. /*          WEDL - Windows Enhanced Dialog Library                           */
  5. /*          Copyright (c) 1991, Mike Smedley                                 */
  6. /*          All Rights Reserved                                              */
  7. /*          Module:  DEMO.C                                                  */
  8. /*                                                                           */
  9. /*---------------------------------------------------------------------------*/
  10.  
  11. #include <windows.h>
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include "wedl.h"
  16. #include "demo.h"
  17.  
  18. /*---------------------------------------------------------------------------*/
  19.  
  20. int PASCAL WinMain( HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine,
  21.                     int nCmdShow );
  22. long FAR PASCAL MainWndProc( HWND hWnd, unsigned message, WORD wParam,
  23.                              LONG lParam );
  24. int FAR PASCAL AboutDlgProc( HWND hDlg, unsigned message, WORD wParam,
  25.                              LONG lParam );
  26. static BOOL okay_to_quit( void );
  27.  
  28. /*---------------------------------------------------------------------------*/
  29.  
  30. static HANDLE hInst;
  31. static char szClassName[] = "WEDL_DEMO";
  32. int (FAR PASCAL *pcheck_date) (LPSTR);
  33. int (FAR PASCAL *pcheck_state) (LPSTR);
  34. int (FAR PASCAL *pcheck_zip_code) (LPSTR);
  35. int (FAR PASCAL *pcheck_file_name) (LPSTR);
  36. char tbuf[512];
  37.  
  38. /*---------------------------------------------------------------------------*/
  39.  
  40. #if defined(__BORLANDC__)
  41. #pragma warn -par
  42. #endif
  43.  
  44. int PASCAL WinMain( HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine,
  45.                     int nCmdShow )
  46. {
  47.     HWND hWnd;
  48.     WNDCLASS wc;
  49.     MSG msg;
  50.  
  51.     hInst = hInstance;
  52.  
  53.     if( !hPrevInstance ) {
  54.  
  55.         wc.style         = NULL;
  56.         wc.lpfnWndProc   = ( LONG (FAR PASCAL *)() ) MainWndProc;
  57.         wc.cbClsExtra    = 0;
  58.         wc.cbWndExtra    = 0;
  59.         wc.hInstance     = hInstance;
  60.         wc.hIcon         = LoadIcon( hInstance, "WEDLIcon" );
  61.         wc.hCursor       = LoadCursor( NULL, IDC_ARROW );
  62.         wc.hbrBackground = GetStockObject( WHITE_BRUSH );
  63.         wc.lpszMenuName  = "MainMenu";
  64.         wc.lpszClassName = szClassName;
  65.  
  66.         if( !RegisterClass( &wc ) ) return( FALSE );
  67.  
  68.     }
  69.  
  70.     hWnd = CreateWindow( szClassName, "WEDL Demonstration Program",
  71.                          WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
  72.                          CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance,
  73.                          NULL );
  74.  
  75.     ShowWindow( hWnd, nCmdShow );
  76.     UpdateWindow( hWnd );
  77.  
  78.     while( GetMessage( &msg, NULL, 0, 0 ) ) {
  79.         TranslateMessage( &msg );
  80.         DispatchMessage( &msg );
  81.     }
  82.  
  83.     return( msg.wParam );
  84. }
  85.  
  86. #if defined(__BORLANDC__)
  87. #pragma warn +par
  88. #endif
  89.  
  90. /*---------------------------------------------------------------------------*/
  91.  
  92. long FAR PASCAL MainWndProc( HWND hWnd, unsigned message, WORD wParam,
  93.                              LONG lParam )
  94. {
  95.     FARPROC pdialog_proc;
  96.  
  97.     switch( message ) {
  98.  
  99.         case WM_COMMAND:
  100.             switch( wParam ) {
  101.                 case IDM_DIALOG1:
  102.                     pdialog_proc    = MakeProcInstance( DialogProc1,    hInst );
  103.                     pcheck_date     = MakeProcInstance( check_date,     hInst );
  104.                     pcheck_state    = MakeProcInstance( check_state,    hInst );
  105.                     pcheck_zip_code = MakeProcInstance( check_zip_code, hInst );
  106.                     DialogBox( hInst, "DIALOG_1", hWnd, pdialog_proc );
  107.                     FreeProcInstance( pcheck_zip_code );
  108.                     FreeProcInstance( pcheck_state    );
  109.                     FreeProcInstance( pcheck_date     );
  110.                     FreeProcInstance( pdialog_proc    );
  111.                     break;
  112.                 case IDM_DIALOG2:
  113.                     pdialog_proc = MakeProcInstance( DialogProc2, hInst );
  114.                     DialogBox( hInst, "DIALOG_2", hWnd, pdialog_proc );
  115.                     FreeProcInstance( pdialog_proc );
  116.                     break;
  117.                 case IDM_DIALOG3:
  118.                     pdialog_proc     = MakeProcInstance( DialogProc3,     hInst );
  119.                     pcheck_file_name = MakeProcInstance( check_file_name, hInst );
  120.                     DialogBox( hInst, "DIALOG_3", hWnd, pdialog_proc );
  121.                     FreeProcInstance( pcheck_file_name );
  122.                     FreeProcInstance( pdialog_proc     );
  123.                     break;
  124.                 case IDM_DIALOG4:
  125.                     pdialog_proc = MakeProcInstance( DialogProc4, hInst );
  126.                     DialogBox( hInst, "DIALOG_4", hWnd, pdialog_proc );
  127.                     FreeProcInstance( pdialog_proc );
  128.                     break;
  129.                 case IDM_EXIT:
  130.                     SendMessage( hWnd, WM_CLOSE, 0, 0L );
  131.                     break;
  132.                 case IDM_ABOUT:
  133.                     pdialog_proc = MakeProcInstance( AboutDlgProc, hInst );
  134.                     DialogBox( hInst, "AboutWEDL", hWnd, pdialog_proc );
  135.                     FreeProcInstance( pdialog_proc );
  136.                     break;
  137.             }
  138.             break;
  139.  
  140.         case WM_QUERYENDSESSION:
  141.             return( okay_to_quit() );
  142.  
  143.         case WM_CLOSE:
  144.             if( !okay_to_quit() ) break;
  145.             /* fall through to default */
  146.  
  147.         default:
  148.             return( DefWindowProc( hWnd, message, wParam, lParam ) );
  149.     }
  150.     return( 0L );
  151. }
  152.  
  153. /*---------------------------------------------------------------------------*/
  154.  
  155. #if defined(__BORLANDC__)
  156. #pragma warn -par
  157. #endif
  158.  
  159. int FAR PASCAL AboutDlgProc( HWND hDlg, unsigned message, WORD wParam,
  160.                              LONG lParam )
  161. {
  162.     switch( message ) {
  163.         case WM_INITDIALOG:
  164.             return( TRUE );
  165.         case WM_COMMAND:
  166.             if( wParam == IDOK || wParam == IDCANCEL ) {
  167.                 EndDialog( hDlg, TRUE );
  168.                 return( TRUE );
  169.             }
  170.             break;
  171.     }
  172.     return( FALSE );
  173. }
  174.  
  175. #if defined(__BORLANDC__)
  176. #pragma warn +par
  177. #endif
  178.  
  179. /*---------------------------------------------------------------------------*/
  180.  
  181. static BOOL okay_to_quit( void )
  182. {
  183.     return( MessageBox( NULL, "Quit, are you sure?", "WEDL Demo",
  184.                         MB_ICONQUESTION | MB_YESNO ) == IDYES );
  185. }
  186.  
  187.